home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
The Utilities Experience
/
The Utilities Experience - Volume 1.iso
/
software
/
demos
/
r-z
/
stormc-demo
/
liesmich
< prev
next >
Wrap
Text File
|
1996-01-18
|
26KB
|
648 lines
Willkommen zur StormC-Demoversion 1.0
Bereits zur Computer 95 im letzten November war eine Vorversion unseres
neuen Compilersystems erhältlich. Die verwirklichten Konzepte und
eingeflossenen neuen Innovationen haben auch die Presse überzeugt, wie
Sie in einigen Berichten in den Januar- und Februar-Ausgaben der gängigen
Amiga-Zeitschriften nachlesen können.
Hier nur einige Auszüge:
Amiga Plus 1/96
Neue Konzepte bei Entwicklung und Qualitätssicherung...
Die erste Besonderheit ist die Projektverwaltung, die zum ersten
Mal bei einem solchen Paket nicht aufgesetzt wirkt...
Amiga Magazin 1/96
Die Projektverwaltung: Endlich einmal ein Tool, das nicht wie ein Klotz
am Bein wirkt, sondern wirklich nützlich ist.
Amiga Special 2/96
Ein schneller Compiler, der leistungsstarke Debugger und die komfortable
Entwicklungsumgebung sind eine interessante Mischung, wenn es sich um
professionelle Softwareentwicklung handelt...
Mit der beiliegenden Demoversion können Sie sich selbst davon überzeugen.
Einschränkungen der Demoversion:
================================
Der beiliegende Compiler wird Ihnen zwar große Sourcen durchkompilieren
aber lediglich maximal 10 KByte große Objektcodes schreiben. Sie haben
damit zumindest die Gewißheit, daß Ihre großen Projekte auch kompiliert
werden können.
Der Linker linkt aus den erzeugten Objekten ein Programm mit maximal
20 KByte Größe.
Alle Programmteile von StormC lassen sich NICHT über das CLI starten
sondern sind lediglich in der integrierten Umgebung nutzbar.
Wichtiges zur Installation:
===========================
Die vorliegenden Dateien sind dafür vorgesehen, von CD installiert zu
werden. Wenn Sie die Dateien bereits auf Ihre Festplatte kopiert haben
ist eine Installation nicht notwendig. Sie müssen dann lediglich einen
StormC-Assign in die Datei "user-startup" eintragen, damit die Demo-
Sourcen und StormC-Voreinstellungen unverändert genutzt werden können.
Include-Lizenzen:
=================
Wenn Sie die Demoversion von einer Mailbox oder vom Aminet geladen
haben, liegen nur die Includes und Bibliotheken bei, deren Urheber-
rechte bei uns liegen. Es fehlen die Systemincludes zu Kickstart/Work-
bench 3.1.
Woher bekommt man die Includes?
-------------------------------
Wenn Sie die Demoversion direkt bei uns anfordern, werden selbstver-
ständlich alle Includes und Bibliotheken mitgeliefert. Wir müssen
allerdings eine Schutzgebühr von 20,- DM berechnen, die Ihnen jedoch
beim Kauf einer Vollversion von StormC angerechnet wird. Bei einer
Bestellung per Nachnahme erhöht sich der Preis um die Nachnahmegebühren
von 13,- DM.
Desweiteren finden Sie die kompletten Includes und Bibliotheken auf der
CD 1/96 des Amiga-Magazins.
Vielleicht haben Sie aber auch bereits die Preview-Version unseres
StormC-Compilers. Dann haben Sie ebenfalls bereits die Includes
erhalten und müssen in der Demoversion lediglich folgende Dateien
ergänzen:
In den Includes die kompletten Verzeichnisse:
datatypes
devices
diskfont
dos
exec
gadgets
graphics
hardware
intuition
libraries
prefs
resources
rexx
utility
workbench
In den Libs die Bibliothek:
amiga.lib
small.lib
debug.lib
ddebug.lib
Bitte verwenden Sie nicht einfach die Includes im Verzeichnis
eines anderen Compilers oder direkt von unserer Preview-Version.
Es wurden einige Änderungen an den, der aktuellen Demoversion
mitgelieferten Dateien vorgenommen, so daß nur die beschriebene
Vorgehensweise zum Erfolg führt.
Änderungen und Erweiterungen gegenüber der Preview-Version:
===========================================================
Allgemeine
----------
Die komplette Umgebung ist nun lokalisiert. Die voreingestellte
Sprache ist Englisch. Bei der Installation wird automatisch der
deutschsprachige Catalog kopiert und auch genutzt, wenn Sie
Workbenck-Lokalisierung deutschsprachig eingestellt haben.
Möchten Sie trotz deutschsprachiger Workbench, mit StormC englisch-
sprachig arbeiten, genügt es die Locale-Datei im Verzeichnis
"StormC:StormSYS/CATALOGE/Deutsch/StormCPP.catalog" umzubenennen.
Programmstart:
--------------
Entgegen der Beschreibung im Handbuch auf der Seite 12 wird das Start-
bild nicht angezeigt, wenn für Ihren Workbench-Screen weniger als
64 Farben eingestellt sind. In diesem Fall erscheint ein kleines Fenster,
das Sie darauf hinweist, daß das System noch geladen wird.
Nach dem Laden erscheint ein weiteres Fenster, das Sie darüber informiert,
welche Version Sie benutzen.
Projektverwaltung (StromShell):
-------------------------------
Bei "Datei(en) hinzufügen" ist eine mehrfache Selektion in der Dateiauswahl
möglich.
In die Projektfenster können Workbench-Piktogramme (Appwindow) abgelegt
werden.
Ist ein Sektionstitel markiert, wenn der Menüpunkt "Löschen" angewählt wird,
erfolgt die Rückfrage, ob der Inhalt der ganzen Sektion gelöscht werden soll.
Beantworten Sie die Rückfrage mit "JA", wird die komplette Sektion entfernt.
Die jeweiligen Dateien bleiben selbstverständlich unberührt.
Wird das Debug-Piktogramm oder der Menüpunkt "Debug..." angewählt, obwohl die
Option zum Erzeugen von Debugger-Dateien im Projekt nicht angewählt sind,
erfolgt eine Rückfrage, ob große oder kleine Debug-Dateien angelegt werden
sollen. Die Projekt-Einstellungen bleiben allerdings unbeeinflußt.
Bei Klick auf die Knöpfe "Start..." und "Debug..." aus dem Fehlerfenster,
wird das Fehlerfenster zuerst geschlossen und dann die entsprechende Programm-
funktion ausgeführt.
Beim "Make" bereits übersetzter Projekte wird jetzt zurückgefragt, ob nur
gelinkt oder das ganze Projekt neu kompiliert werden soll.
Der neue Menüpunkt "Bibliothek(en) hinzufügen..." entspricht dem Menüpunkt
"Datei(en) hinzufügen...", setzt aber den Bibliothekssuchpfad des Projekts
als Verzeichnis im ASL-Filerequester und das Pattern "#?.lib". Dadurch
lassen sich deutlich schneller Bibliotheken zum Projekt hinzunehmen.
Einziges Problem: Mehrfachselektionen werden immer alphabetisch sortiert
vom ASL-Requester zurückgegeben, die relevante Reihenfolge von
Bibliotheken kann man also nur erhalten, wenn man jeweils eine Bibliothek
nach der anderen zum Projekt hinzufügt.
Werden Dateien hinzugefügt, die noch nicht existieren, so wird auf Wunsch
die Datei "leer" erzeugt. Als Icon wird jeweils versucht das Icon
"ENV:STORMCPP/def_text.suffix" zu übernehmen, wobei für ".suffix" das Suffix
des Dateinamens eingesetzt wird (z.B. .c oder .h). Dadurch lassen sich
für verschiedene Textarten verschiedene Piktogramme und Texteinstellungen
verwenden.
Die Einstellungen können nun auch von der StormShell gesichert und geladen
werden.
Für den Linker wurden zwei neue Seiten in den Projekteinsteller eingefügt.
Eine weitere erhielt der Optimizer des Compilers.
Beim Programmstart kann so ziemlich jeder Parameter der Shell-Umgebung
eingestellt werden.
Die Codegröße des Executables wird nun nach jedem Compilerlauf neu angezeigt.
Die Codegröße von Bibliotheken wird nun auch angezeigt, wenn die Bibliothek
aus dem Suchpfad der Bibliotheken stammt.
Die Einstellung für 32-bit-korrekte-Multiplikation ist entfallen. Der Compiler
entscheidet selbständig wann welche Multiplikation benötigt wird.
Bei den Einstellern zum C/C+-Compiler ist die Möglichkeit hinzugekommen,
das kleine oder große Code-Modell zu wählen. Der Compiler und der Linker
generieren dann kurze Sprünge (bsr).
Hinweis: Zur aktuellen Demoversion werden allerdings keine Bibliotheken
geliefert, die ein kleines Code-Modell unterstützen. Bei eingeschalteter
Option werden Ihre Programm demnach nicht lauffähig sein.
Bei "Make" und "Compile" werden nun alle Quelltexte automatisch gesichert.
Die Funktionen der Iconleiste sind nun mit den Funktionstasten F1 bis F6 und
F7 bis F10 erreichbar.
Das About-Fenster und das Einstellungsfenster kann auch mit ESC geschlossen
werden. Weitere Shortcuts für About sind "o" und <Return>. Der Use- und der
Cancel-Knopf des Einstellungsfensters sind auch über ihre Shortcuts bedienbar.
Das Fehlerfenster ist nun tastatursteuerbar: Die Shortcuts für "Run", "Debug"
und "Cancel" sind implementiert. Wenn gerade ein "Make" läuft, kann man es
auch mit <ESC> abbrechen, danach, bzw. wenn kein "Make" läuft, wird das
Fenster durch <ESC> geschlossen. Mit "w" kann man die Warnungen an- und
ausschalten.
Per Cursor läuft man durch die Fehlerliste, per <Alt>-Cursor erreicht man
die erste oder letzte Fehlermeldung. <Return> zeigt die Fehlermeldung im
Editor an.
Das Projektfenster ist komplett tastatursteuerbar. Alle 4 Cursortasten
bewegen den Cursor und den Inhalt entsprechend, <Alt> <hoch>/<runter> ermöglicht
den Sprung an den Anfang/Ende der Einträge, <Shift> <rechts>/<links> an den
rechten oder linken Rand. <Return> führt die Aktion entsprechend eines
Doppelklicks aus, <Alt> <Return> die jeweilige Alternative (bisher nur beim
Executable belegt). Backspace bzw. Delete löschen den Eintrag des Cursor
aus dem Projekt und setzen den Cursor auf den nachfolgenden Eintrag.
Debugger (StormRUN):
--------------------
Das im Handbuch beschriebene Debugger-Demo ist leider nur ab
Betriebssystem V39 lauffähig. Wenn Sie V37/38 installiert haben, sollten
Sie mit dem Gadtools-Demo probieren.
Der Menüeintrag "Programm sichern als..." (Seite 42) ist in der
aktuellen Version nicht enthalten, da eine Änderung am Linker eine
entsprechende Funktionalität verhindert hat.
Variablenwerte einfacher Zahl-Typen (char bis long) können in allen
Variablen- und Inspektionsfenstern geändert werden.
Die Wertausgabe ist deutlich schneller, da nur noch die Werte
konvertiert werden, die sich geändert haben.
Die möglichen Breakpoints werden jetzt gefiltert, so daß pro Quelltext-
zeile nur noch max. ein Breakpoint steht, d.h. jeder Schritt führt auf
eine nächste Zeile.
In einem Fall des Breakpoint-Löschens wurde der Cache nicht gelöscht, was
Probleme auf 68040-Rechner zur Folge hatte.
Ein Hexeditor ist eingebaut. Es kann zwischen Byte-, Word- und
Longanzeige hin- und hergeschaltet werden. Die Eingabe von Adressen
(sowohl im Gadget wie auch direkt im Text), Hexdaten und ASCII Daten
ist möglich. Wie im restlichen Debugger wird nur dort etwas angezeigt, bzw
geändert werden, wo gültiges RAM vorhanden ist. Das verhindert
Enforcerhits, aber verbietet auch den Zugriff auf I/O-Bausteine.
Mit der TAB-Taste kann der Cursor von der Adresspalte auf die Hex- und
ASCII-Daten-Spalte und wieder zurück gesetzt werden. Wird in der
Adresspalte die dort angegebene Adresse überschrieben, springt der
Hexeditor automatisch zu der Adresse.
Bei "Save Settings" ("Einstellungen Speichern") werden die Fensterposition
und -größe des Hexeditors auch gespeichert.
Das "Casting" funktioniert. Dazu wurde das Cycle-Gadget in den Variablen-
fenstern gegen ein Stringgadget ausgetauscht (in einer Objektdatei
können schnell mal > 100 Typen auftauchen - mit einem Cyclegadget ist das
nicht handhabbar). Bislang muß in dieses Stringgadget der Typ exakt so eingetippt werden, wie
er ausgegeben würde.
Wenn eine Adresse illegal ist, wird jetzt die betroffene Adresse ausgegeben
(statt "--").
Die Typ-Ausgabe kann bekanntlich in zwei Modi erfolgen: ANSI-C oder
AMIGA-C (mit ULONG, BYTE etc). Diese Unterscheidung kann der Compiler
leider nicht in den Debuginfos ablegen. Derzeit wird die AMIGA-C-
Schreibweise verwendet (kompakter).
Der Start des Programms ist jetzt systemkonformer und -kompatibler. Auch
Aufrufe von Execute() oder SystemTagList() funktionieren jetzt und,
wenn als Ausgabe die Console gewählt wird, kommen Ausgaben der
Befehle auch auf die Console. Das Programm erscheint jetzt auch in der Liste
der CLIs, einen Kommandonamen in den Projekteinstellungen anzugeben ist also
sinnvoll.
Das Resource-Tracking ist nun implementiert. Am Ende des Programms oder nach
einem Kill werden bisher Screens, Windows, Memory, Libraries, Locks und
Files angezeigt, die nicht geschlossen oder freigegeben wurden. Ein
Doppelklick in die Liste führt an die Stelle des Funktionsaufruf. Das
neue Menü "Debug" enthält einen Menüpunkt "Flush Resources"
("Ressourcen freigeben") zur Freigabe dieser Ressourcen.
In manchen Programmen werden sehr viele Ressourcen alloziert, insbesondere
natürlich Speicher. Solche Ressourcen, die also keinen direkten
Funktionsaufruf im Programm besitzen werden nicht angezeigt, aber dennoch
freigegeben.
Ein schönes Beispiel hierfür kann mit der ASL-Library verdeutlicht werden.
Wenn Sie ein Programm "killen", währen ein ASL-Requester offen ist, wird
das ASL-Fenster geschlossen, obwohl der OpenWindow-Aufruf nicht aus Ihrem
Programm sondern aus der ASL-Library gemacht wurde.
Das Ressource-Tracking kann nur den unmittelbare "Caller" ermitteln.
D.h. die Funktion, die den jsr d(a6) enthält. Schon eine Stub-Funktion
für Library-Aufrufe verhindert deshalb die korrekte Anzeige des Aufrufs.
Deshalb ist es angeraten Stub-Funktionen zu vermeiden und "pragma amicall"-
und "tagcall"-Aufrufe zu verwenden.
Editor:
=======
Help-Funktion
-------------
Mit drücken der Help Taste kann man das Wort unter dem Cursor an die
HotHelp-Library (Version 3) übergeben. HotHelp wird dann veranlaßt,
das Schlüsselwort zu suchen und den Hilfetext anzuzeigen!
Lexikon-Dateien und manuelle Farbänderungen / Aufbau der Lexikon-Dateien
------------------------------------------------------------------------
Lexikon (0001)
Amiga Typen
0x00ff0000 0xffffffff 2 0 0
0
VOID
LONG...
Zeile 1: Diese Zeile identifiziert die Datei als Lexikon und trägt
die Versionsnummer der Lexikon-Datei.
Zeile 2: Kommentarzeile
Zeile 3: RGB-Farbe-Vordergrund RGB-Farbe-Hintergrund (ab V39)
Vordergrund-Stiftnummer Hintergrund-Stiftnummer (für V37 und V38 erforderlich)
Stilnummer
Zeile 4: Groß-/Kleinschreibung beachten ein/aus
Zeile 5-...: Inhalte
Ab Betriebssystem-V39 können RGB Farben für die Lexika eingesetzt werden.
Die ersten beiden Zahlen geben in 24 Bit die RGB Farbe für
Schrift- und Hintergrundfarbe an. Dazu können auch Hexadezimalzahlen
mit "0x" am Anfang benutzt werden.
Unter Kickstart V37/V38 werden feste Stiftnummern für die Farbangaben verwendet.
Sie sollten das Compiler-System auf einem Screen mit mindestens 8 Farben
betreiben, da die Farbunterschiede andernfalls zu gering sind.
Für den Editor wurden zwei neue Menüpunkte eingeführt:
1. Einstellungen für den Editor allgemein...
2. ...und für jeden Text im besonderen.
Folgende Editoreinstellungen werden, wie im Fenster zu sehen, bereits
unterstützt: Autosave, Backups, Strip EOL Blanks und Textfontwahl.
Autosave kennt zwei Algorithmen:
Entweder wird alle "n" Minuten ein normales Save durchgeführt, oder
es wird der Text in eine Extradatei gesichert. Der Name dieser
Extradatei wird automatisch durch dem Namen des Dokuments mit einem
angehängten ";0" erzeugt.
Das Sichern in diese Extradatei verändert natürlich nicht den
Textnamen und setzt auch nicht das Modify-Flag "M" zurück.
Zusätzlich kann man beim automatischen Sichern nachfragen lassen, ob
gesichert werden soll.
Hat der Text keinen Namen, wird der Benutzer aufgefordert, den Text zu
sichern, ein Autosave wird dann nicht mehr durchgeführt. Beim Laden eines
Textes wird überprüft, ob eine Autosave-Datei jüngeren Datums existiert, in
diesem Fall bekommt der Benutzer die Wahl welche Datei er laden will, als
Textname wird in beiden Fällen der Originaldateiname gewählt.
Man kann bis zu 9 Backup-Dateien anlegen. Bei jedem Sichern des Textes (auch
bei Autosave auf die Originaldatei) werden die Backup-dateinamen hochgezählt
(die älteste Datei geht dabei eventuell verloren). Die Namen der Backup-
Dateien
ergeben sich aus dem Namen der Originaldatei mit angehängtem ";N", wobei
"N" eine Ziffer zwischen 1 und 9 ist. Die älteste Datei ist die Datei mit
der höchsten Nummer, die jüngste mit der Nummer 1.
Beim Sichern kann man alle "white spaces", d.h. insb. Spaces und Tabs am
Ende der Textzeilen entfernen lassen.
Als Zeichensatz kann jeder nicht-proportionale Zeichensatz angegeben werden.
Achtung: Momentan wird noch keine Fehlermeldung ausgegeben, wenn ein
ungültiger (d.h. nicht existierender oder proportionaler) Zeichensatz
angegeben wird. Es ist empfehlenswert wirklich Zeichensätze auszuwählen,
deren Zeichen alle gleich breit sind. Dies gilt z.B. nicht für den Courier-
Zeichensatz, manche Zeichen sind breiter als die im Font angegebene Breite.
Dadurch kann es zu leichten Darstellungsfehlern am Rand des Texts kommen.
Die Tabulatorweite kann eingestellt werden und wird mit dem Tooltype
TABWIDTH gespeichert.
Automatische Einrückungen können durch "{" und "}" ausgelöst werden.
Bislang wird nur eingerückt (d.h. nur auf das Zeichen "{" reagiert).
Man kann wählen, ob Spaces oder Tabs eingefügt werden, und wieviel
jeweils.
Dabei werden 2 Methoden und ihre Kombinationen unterstützt:
1. Vor der Klammer eingerückt bedeutet, daß beim Eingeben der Klammer
diese eingerückt wird, wenn vor der Klammer nur Spaces oder Tabs in
der Zeile stehen. Nach der Klammer wird nach dem nächsten Zeilenum-
bruch eingerückt, wenn die Klammer das letzte Zeichen der vorherigen
Zeile ist.
Man kann auswählen, welche Lexika eingefärbt werden und die Syntaxein-
färbungen für C/C++ Kommentare, Strings, Char-Konstanten und Zahl-Konstanten.
Die Einfärbung von C-Kommentaren (/* Test */) funktioniert mit
Einschränkungen:
geschachtelte Kommentare sind nicht möglich (werdem allerdings vom
Compiler auch nicht unterstützt, #if 0 ... #endif macht das auch
besser).
Die gesamte Einfärberei hat einige Einschränkungen, die jetzt erst
mit den C-Kommentaren wirklich zum Vorschein kommen: Verschachtelte
Einfärbungen, z.B. C++-Kommentare, die in einem C-Kommentar stehen,
können die Einfärbung durcheinander bringen. Werden die einzelnen
Einfärbungen ausgeschaltet, so wird nur die Farbe ausgeschaltet,
die Farbmarkierungen werden dennoch gesetzt.
Also werden z.B. in einem C-Kommentar stehende Strings oder Lexika-
wörter nicht eingefärbt, egal ob die Einfärbung von C-Kommentaren an
oder aus ist. Genauso bringt das Ausschalten der Einfärbungen zur Zeit
keinen Geschwindigkeitszuwachs.
Die Editoreinstellungen werden unter dem Namen "StormSettings.ED"
gespeichert. In dieser ASCII Datei stehen in den letzten Zeilen die
Farben und Register dieser Syntaxeinfärbungen entsprechend der
Reihenfolge im Texteinstellungsfenster und der Syntax, wie sie auch
in den Lexikadateien verwendet wird.
Die Gadgets im Editorfenster sind auch über Tastatur steuerbar. Der
Shortcut ist natürlich von der Lokalisierung abhängig, sollte aber immer
den Qualifier "ctrl" enthalten, um Konflikte mit anderen Shortcuts zu
vermeiden. Der Qualifier "ctrl" wird auch extra behandelt um Konflikte
mit Texteingaben zu vermeiden (was insbesondere CTRL-I und CTRL-M
betrifft, die jetzt nicht mehr äquivalent zu TAB und RETURN sind).
Zwischen der Modified-Anzeige und der Cursorspalten-Anzeige befindet sich
jetzt eine Hilfezeile für alle Gadgets.
Um wirklich von einer 100%igen Tastaursteuerbarkeit zu reden fehlt noch
die Möglichkeit, zwischen den Textfenstern zu springen (bzw. auch die
Projektfenster aktivieren zu können).
Das Find&Replace-Fenster ist nun auch vollständig tastatursteuerbar. Beim
Öffnen des Fensters ist immer das Find-Stringgadget aktiv. Mit <Return> oder
<Tab> wird der String gesucht und das Replace-Gadget aktiviert.
Dort wird mit <Return> oder <Tab> wieder das Findgadget aktiviert. Aus diesen
Stringgadgets heraus kann man alle anderen Gadgets dennoch durch die
Shortcuts bedienen, wahlweise mit der rechten oder auch linken Amiga-Taste
(die linke Amiga-Taste wird erlaubt um Konflikte mit Shortcuts von
Programmen wie NewEdit zu vermeiden, die einen Großteil aller Shortcuts
für sich belegen). Die Shortcuts der Cycle- und Checkboxgadgets
reaktivieren das Stringgadget wieder, die Shortcuts der Buttons aktivieren
das Texteditorfenster. Will man also einen Text suchen und danach in das
Textfenster zurückkehren, so sollte man die Suche mit dem Shortcut von
"Find" (rcommand f) auslösen. <ESC> schließt das Find&Replace-Fenster und
aktiviert das Textfenster.
Die Funktionen aus der StormShell-Toolbar können auch aus dem Editor mit
den Funktionstasten aufgerufen werden.
Eine einfache Print-Funktion ist eingebaut: der ganze Text kann ausgedruckt
werden, dabei wird ein Progress-Fenster angezeigt, in dem der Druck auch
abgebrochen werden kann.
Tastaturbelegung:
-----------------
Shift-Cursor Up/Down
Bewegt den Cursor auf die erste/letzte Zeile, die im Fenster angezeigt
ist.
Shift-Cursor Left/Right
Bewegt den Cursor auf die erste/letzte Spalte in der aktuellen Zeile.
Alt-Cursor Up/Down
Springt an den Anfang/ans Ende des Textes.
Alt-Cursor Left/Right
Bewegt den Cursor auf das nächste Wort vor oder auf das letzte hinter
dem Cursor.
Shift-Delete oder Shift-Backspace
Löscht die Zeile, auf der der Cursor steht. Die Zeile wird in die Zwischen-
ablage gespeichert.
Alt-Delete
Löscht die Zeile ab der Cursor-Position bis zum Ende der Zeile.
Alt-Backspace
Löscht den Text zwischen der ersten Spalte bis zur Cursorposition.
Help
Schickt das Wort unter dem Cursor an die Hothelp-Library V3.0 (14. Feb 94).
Compiler:
---------
Im Folgenden werden die Compileränderungen seit der Veröffentlichung
der Preview-Version aufgelistet.
Im ASM-Source wurde bei DS.B o.ä. die allokierte Speichergröße
nur als 16-Bit-Zahl ausgegeben.
Ab 68020 wird der Befehl EXTB.L unterstützt.
Durch Probleme bei Fließkomma-Konstanten mit angehängtem "f"
(z.B. "0.5f") kam es gelegentlich zur Ausgabe von unsinnigen Werten.
Konstrukt "#if defined (xxx)" (die Variante mit Klammern hinter dem
define) führte zu einer Compiler-Panik.
Konvertierung von "unsigned short"/"unsigned byte" auf einen längeren
Typ geschah mittels AND und falscher Bitmaske (genau invers).
Konvertierung von "unsigned byte" auf einen vorzeichenbehafteten
Ganzzahltypen geschah fälschlich mittels EXT.
Aufruf virtueller Funktionen bei Mehrfachvererbung: der
"this"-Pointer der aufgerufenen Funktion wurde in der Variablen
korrigiert, in der er gerade steht - auch wenn es sich dabei um
eine noch benötigte Variable handelt.
"Rundungsfehler" bei Anordnung lokaler Variablen auf dem Stack
führte u.U. zu Variablen an ungeraden Adressen und Stack Frames
ungerader Größe.
"Geschmissene" Exceptions konnten im optimierten Modus meist nicht
mehr aufgefangen werden.
Variable "sym_handlers" (wichtig fürs Exception Handling!) wird
jetzt im Small-Data-Model auch A4-relativ adressiert (endlich
eine sinnvolle Verbindung von Small Data Model und OO-Programmierung).
Wurde in einem Destruktor einer Klasse, die einen Member oder
eine Basisklasse mit Destruktor besitzt, eine Inline-Funktion
aufgerufen, so wurde vom Ende der Inline-Funktion direkt an das
Ende des Destruktors (zur Destruierung von Membern und Basen)
gesprungen.
Beim Abtesten einzelner Bits in Bitfeldern wurde auf das falsche
Bit zugegriffen, was sich auf Umwegen auch beim Konstruieren und
Destruieren virtueller Basisklassen bemerkbar machte.
Als Basiszeiger für die double-Mathe-Lib wird jetzt
"_MathIeeDoubBasBase" statt "lib_MathBase" verwendet.
Die Bibliotheksroutinen "lib_int2double" und "lib_double2int" wurden
durch direkte Aufrufe von IEEEDPFix/IEEEDPFlt ersetzt.
Die Repräsentierung von "long long" wurde compilerseitig auf
eine einleuchtendere Form umgestellt (normales Big Endian).
Außerdem werden für entsprechende Operationen die
Bibliotheksfunktionen Add64, Sub64, Neg64, Cmp64, UMult64,
UDiv64, UMod64, SMult64, SDiv64, SMod64 aufgerufen.
Leere "_INIT_"-Funktionen werden nicht mehr erzeugt.
Bei numerischer Auswertung der Ausdrücke "i != 0" und "!i" wurde
das Ergebnis fälschlich mit AND.W statt AND.L ausmaskiert.
Ein recht globaler Fehler in der Speicherverwaltung verursachte
Adreßfehler auf 68000ern (und ungünstig align'te Daten auf
allen anderen Amigas).
Innerhalb von Konstruktoren wurden generell keine virtuellen
Funktionen aufgerufen, selbst wenn diese eindeutig nicht über
"this" bezogen waren.
Fehler beim Zugriff auf Strukturen von mehr als 32 KByte Größe:
Adreßoffsets >32767 wurden falsch codiert und führten zu einem
Assemblerfehler.
Fehler im Zusammenhang mit MagicMenu und möglicherweise mit SUN-Mouse-Utilities
-------------------------------------------------------------------------------
Bei installiertem MagicMenu friert der Bildschirm ein, wenn bei aktivem
Piktogramm-Fenster die rechte Maustaste gedrückt wird und sich der
Mauszeiger über einem Piktogramm befindet. Durch eine Inkonformität von MagicMenu
werden Mousemove-Nachrichten geschickt, obwohl die rechte Maustaste gedrückt
ist. In diesem Fall versucht dann die StormShell die Hilfezeile im Fenster
auszugeben und erzeugt dadurch das Einfrieren des Bildschirms. Im Falle von
MagicMenu dauert es ca. 10 Sekunden und man kann normal weiterarbeiten.
Zu ähnlichen Problemen kann es auch mit verschiedenen SUN-Mouse Utilities
kommen.
Bei Fragen wenden Sie sich bitte an:
HAAGE & PARTNER Computer GmbH
Mainzer Straße 10A
61191 Rosbach v.d.H.
Tel: 06007/930050
Fax: 06007/7543
Compuserve: 100654,3133
Internet: 100654.3133@compuserve.com
Web Page: http://home.pages.de/~haage
Zum Schluß möchten wir uns bei unseren aktiven Betatestern bedanken.
Vielen Dank an:
Dietmar Augustin
Olaf Barthel
Michael Bergmann
Holger Burkarth
Thomas Bayen
Bernhard Büchter
Michael Donner
Torsten Ebeling
David Göhler
Clemens Marschner
Alexander Pratsch
Andreas Pfohl
Constantin Rack
Michael Rock
Jürgen Schildmann
Carsten Schlote
Stephan Schüerholz
Thomas Wilhelmi
(c) 1995/1996 HAAGE & PARTNER Computer GmbH